var read_line = require('readline-sync')
read_line.setDefaultOptions({ prompt: '' })
var read_line = read_line.prompt
let [n, m] = read_line().split(' ').map((item) => parseInt(item)) // 转成数字
let chessBoardA = []
for (let i = 0; i < n; i++) {
  let arr = read_line().split('').map((item) => parseInt(item)) // 读出一个数组
  chessBoardA.push(arr)
}
let t = parseInt(read_line()) // 读出这个t
for (let i = 0; i < t; i++) {
  let chessBoard = JSON.parse(JSON.stringify(chessBoardA))
  let [x, y, k] = read_line().split(' ').map((item) => parseInt(item))
  x = x - 1
  y = y - 1 // 得出真正的其实位置
  function getPosition (x, y, k) {
    if (k === -1) {
      return [x, y] // 返回这个的位置
    }
    if (x + 1 < n && y < m && x + 1 >= 0 && y >= 0 && chessBoard[x + 1][y] !== chessBoard[x][y]) { // 未越界 值不同 可以进行下一步
      chessBoard[x][y] = chessBoard[x + 1][y] // 原来的等于下一个
      k-- // 次数-1
      return getPosition(x + 1, y, k)
    }
    if (x < n && y + 1 < m && x >= 0 && y + 1 >= 0 && chessBoard[x][y + 1] !== chessBoard[x][y]) {
      chessBoard[x][y] = chessBoard[x][y + 1]
      k--
      return getPosition(x, y + 1, k)
    }
    if (x < n && y - 1 >= 0 && x >= 0 && y - 1 < m && chessBoard[x][y - 1] !== chessBoard[x][y]) {
      chessBoard[x][y] = chessBoard[x][y - 1]
      k--
      return getPosition(x, y - 1, k)
    }
    if (x - 1 >= 0 && y < m && x - 1 < n && y >= 0 && chessBoard[x - 1][y] !== chessBoard[x][y]) {
      chessBoard[x][y] = chessBoard[x - 1][y]
      k--
      return getPosition(x - 1, y, k)
    }
    return [x, y]
  }
  let [positionX, positionY] = getPosition(x, y, k)
  console.log(positionX + 1, positionY + 1);
}